home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 June / SGI Freeware 1998 June.iso / dist / fw_bind.idb / usr / freeware / lib / bind / include / isc / heap.h.z / heap.h
Text File  |  1998-05-26  |  2KB  |  48 lines

  1. /*
  2.  * Copyright (c) 1997 by Internet Software Consortium.
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software for any
  5.  * purpose with or without fee is hereby granted, provided that the above
  6.  * copyright notice and this permission notice appear in all copies.
  7.  *
  8.  * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
  9.  * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
  10.  * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
  11.  * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  12.  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  13.  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  14.  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  15.  * SOFTWARE.
  16.  */
  17.  
  18. typedef int (*heap_higher_priority_func)(void *, void *);
  19. typedef void (*heap_index_func)(void *, int);
  20. typedef void (*heap_for_each_func)(void *, void *);
  21.  
  22. typedef struct heap_context {
  23.     int array_size;
  24.     int array_size_increment;
  25.     int heap_size;
  26.     void **heap;
  27.     heap_higher_priority_func higher_priority;
  28.     heap_index_func index;
  29. } *heap_context;
  30.  
  31. #define heap_new    __heap_new
  32. #define heap_free    __heap_free
  33. #define heap_insert    __heap_insert
  34. #define heap_delete    __heap_delete
  35. #define heap_increased    __heap_increased
  36. #define heap_decreased    __heap_decreased
  37. #define heap_element    __heap_element
  38. #define heap_for_each    __heap_for_each
  39.  
  40. heap_context    heap_new(heap_higher_priority_func, heap_index_func, int);
  41. int        heap_free(heap_context);
  42. int        heap_insert(heap_context, void *);
  43. int        heap_delete(heap_context, int);
  44. int        heap_increased(heap_context, int);
  45. int        heap_decreased(heap_context, int);
  46. void *        heap_element(heap_context, int);
  47. int        heap_for_each(heap_context, heap_for_each_func, void *);
  48.